#include "enemyplane.h"
#include"config.h"
#include<qmath.h>


EnemyPlane::EnemyPlane()
{
    //敌机资源加载
    int random = rand()%3+1;
    if(random==1)
    m_enemy.load(ENEMY_PATH1);
    if(random==2)
    m_enemy.load(ENEMY_PATH2);
    if(random==3)
    m_enemy.load(ENEMY_PATH3);
    //敌机位置
    m_X = 0;
    m_Y = 0;

    //敌机状态
    m_Free = true;

    //敌机速度
    m_Speed = ENEMY_SPEED;

    //敌机矩形框（碰撞检测）
    m_Rect.setWidth(m_enemy.width());
    m_Rect.setWidth(m_enemy.height());
    m_Rect.moveTo(m_X,m_Y);

}

void EnemyPlane::updatePosition()
{
    //空闲状态敌机不计算坐标
    if(m_Free)
     {
        return;
     }
    //if(random==1)//从上方出现，往下走
    //{
        m_Y += m_Speed;
        m_Rect.moveTo(m_X,m_Y);
    //}
//    if(random==2)//从右侧出现，往左走
//    {
//        m_X+=m_Speed;
//        m_Rect.moveTo(m_X,m_Y);
//    }
//    if(random==3)
//    {
//        m_X-=m_Speed;
//        m_Rect.moveTo(m_X,m_Y);
//    }
//    if(random==4)
//    {
//        m_Y-=m_Speed;
//        m_Rect.moveTo(m_X,m_Y);
//    }

    //如果超出屏幕，重置空闲状态
    if(m_Y >= GAME_HEIGHT + m_Rect.height()||m_Y <= -m_Rect.height()||m_X <= -m_Rect.width()||m_X >= GAME_WIDTH + m_Rect.width())//屏幕高度+敌机高度（全部出去）
    {
            m_Free = true;
    }
}


void EnemyPlane::shoot()//需要配合子弹类实现
{
    //累加时间间隔记录变量
    m_recorder++;

    //如果记录的数字未达到发射子弹的时间间隔，直接return，不发射
    if(m_recorder < BULLET_INTERVAL)
    {
        return;
    }

    //达到发射时间
    m_recorder = 0;

    //发射子弹
    for(int i = 0;i < BULLET_NUM;i++)
    {
        //如果是空闲的子弹，进行发射
        if(e_bullets[i].m_Free)
        {
            //将空闲状态改为false
            e_bullets[i].m_Free = false;
            //设置子弹坐标
            e_bullets[i].m_X=m_X;//
            e_bullets[i].m_Y=m_Y;//子弹位置，从此处微调
             break;//很关键 可以防止连续发射（为啥）
        }
    }
}
